// ----------------------------------
// RSDK Project: Sonic Essence
// Script Description: Controls Menu
// Script Author: Tails_LP, Xanman
// ----------------------------------

//-------Aliases-------//

private alias object.value0 : menu.xpos
private alias object.value1 : menu.selection
private alias object.value2 : start.fadeValue
private alias object.value3 : menu.direction
private alias object.value4 : creditsoffset
private alias object.value5 : timer
private alias object.value6 : arrowoffset

private alias 0 : INACTIVE
private alias 1 : SCROLL_IN

private alias 2 : OPTIONS_IDLE

private alias 8 : SCROLL_OUT
private alias 9 : EXITING

//-------Function declarations-------//
public alias saveRAM[261] : buttons	

//-------Static Values-------//
private value controllertype = 0;

//-------Tables-------//


//-------Functions-------//

event ObjectMain
	object.inkEffect = INK_ALPHA
	switch object.state
	case INACTIVE
		controllertype = buttons
		menu.xpos = 8
		break
	case SCROLL_IN
		object.alpha = 255
		if menu.xpos > -280
			menu.xpos -= 12
		else
			menu.xpos = -280
			object.state = OPTIONS_IDLE
			temp4 = 0
		endif
		break
	case OPTIONS_IDLE
		object.alpha = 255

		temp0 = inputPress.left
		temp0 |= inputPress.right
		if temp0 == 1
			PlaySfx(SfxName[Menu Move], 0)
		end if

		switch menu.selection
		case 0
			if inputPress.left == 1					
				controllertype--
				if controllertype < 0
					controllertype = 3
				end if
			end if
			if inputPress.right == 1
				controllertype++
				if controllertype > 3
					controllertype = 0
				end if
			end if
			break
		end switch
			if inputPress.buttonB == 1	
				PlaySfx(SfxName[Menu Back], 0)
				object.state = SCROLL_OUT
			end if
		break
	case SCROLL_OUT
		if menu.xpos < 8
			menu.xpos += 12
		else
			creditsoffset = 0
			menu.xpos = 8
			object.state = INACTIVE
			foreach (TypeName[Main Menu], arrayPos0, ALL_ENTITIES)
				object[arrayPos0].state = 1
			next
		endif
		break
	endswitch
end event

event ObjectDraw
	arrowoffset++
	if object.state != INACTIVE
	temp0 = screen.xsize
	temp0 += menu.xpos
	DrawRect(temp0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)

	temp0 -= 4
	temp1-= arrowoffset
	while temp1 < screen.ysize
		DrawSpriteScreenXY(0, temp0, temp1)
		temp1 += 64
		DrawSpriteScreenXY(0, temp0, temp1)
		temp1 += 64
	loop

		temp0 = screen.xsize
		temp0 += menu.xpos
		temp0 += 110
		temp1 = 20
		DrawSpriteScreenFX(1, FX_INK, temp0, temp1)
		temp1 += 10
		DrawSpriteScreenFX(2, FX_INK, temp0, temp1)
		temp0 -= 40
		temp1 += 12
		DrawSpriteScreenFX(1, FX_INK, temp0, temp1)
		temp1 += 12
		temp0 += 120
		switch controllertype
		case 0
			DrawSpriteScreenFX(6, FX_INK, temp0, temp1)
			temp0 -= 100
			temp1 += 40

			DrawSpriteScreenFX(21, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 4
			DrawSpriteScreenFX(15, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 16

			DrawSpriteScreenFX(22, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 4
			DrawSpriteScreenFX(17, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 16

			DrawSpriteScreenFX(23, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 4
			DrawSpriteScreenFX(16, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 16

			DrawSpriteScreenFX(20, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 4
			DrawSpriteScreenFX(18, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 16

			DrawSpriteScreenFX(24, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 4
			DrawSpriteScreenFX(19, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 16

			temp0 -= 41
			temp1 += 4
			DrawSpriteScreenFX(27, FX_INK, temp0, temp1)
			break

		case 1 //xbox
			DrawSpriteScreenFX(7, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 40
			DrawSpriteScreenFX(3, FX_INK, temp0, temp1)
			
			temp0 -= 28
			temp1 += 46
			DrawSpriteScreenFX(10, FX_INK, temp0, temp1)
			temp0 -= 44
			temp1 += 10
			DrawSpriteScreenFX(11, FX_INK, temp0, temp1)
			temp0 += 21
			temp1 -= 28
			DrawSpriteScreenFX(12, FX_INK, temp0, temp1)
			temp0 += 145
			temp1 += 7
			DrawSpriteScreenFX(13, FX_INK, temp0, temp1)
			temp0 -= 67
			temp1 -= 35
			DrawSpriteScreenFX(14, FX_INK, temp0, temp1)

			temp0 -= 45
			temp1 += 26
			DrawSpriteScreenFX(15, FX_INK, temp0, temp1)
			temp0 += 17
			temp1 += 22
			DrawSpriteScreenFX(16, FX_INK, temp0, temp1)
			temp0 -= 30
			temp1 += 19
			DrawSpriteScreenFX(17, FX_INK, temp0, temp1)
			temp0 += 80
			temp1 -= 67
			DrawSpriteScreenFX(19, FX_INK, temp0, temp1)
			temp0 += 80
			temp1 += 37
			DrawSpriteScreenFX(18, FX_INK, temp0, temp1)

			temp0 -= 180
			temp1 += 67
			DrawSpriteScreenFX(25, FX_INK, temp0, temp1)
			break

		case 2 //ps4
			DrawSpriteScreenFX(8, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 40
			DrawSpriteScreenFX(4, FX_INK, temp0, temp1)

			temp0 -= 57
			temp1 += 21
			DrawSpriteScreenFX(10, FX_INK, temp0, temp1)
			temp0 -= 44
			temp1 += 10
			DrawSpriteScreenFX(11, FX_INK, temp0, temp1)
			temp0 += 21
			temp1 -= 28
			DrawSpriteScreenFX(12, FX_INK, temp0, temp1)
			temp0 += 180
			temp1 += 30
			DrawSpriteScreenFX(13, FX_INK, temp0, temp1)
			temp0 -= 67
			temp1 -= 35
			DrawSpriteScreenFX(14, FX_INK, temp0, temp1)

			temp0 -= 80
			temp1 += 2
			DrawSpriteScreenFX(15, FX_INK, temp0, temp1)
			temp0 += 17
			temp1 += 22
			DrawSpriteScreenFX(16, FX_INK, temp0, temp1)
			temp0 -= 30
			temp1 += 19
			DrawSpriteScreenFX(17, FX_INK, temp0, temp1)
			temp0 += 115
			temp1 -= 44
			DrawSpriteScreenFX(19, FX_INK, temp0, temp1)
			temp0 += 75
			temp1 += 38
			DrawSpriteScreenFX(18, FX_INK, temp0, temp1)

			temp0 -= 181
			temp1 += 69
			DrawSpriteScreenFX(26, FX_INK, temp0, temp1)
			break
		case 3
			DrawSpriteScreenFX(9, FX_INK, temp0, temp1)
			temp0 -= 90
			temp1 += 40
			DrawSpriteScreenFX(5, FX_INK, temp0, temp1)

			temp0 -= 33
			temp1 += 33
			DrawSpriteScreenFX(10, FX_INK, temp0, temp1)
			temp0 -= 44
			temp1 += 10
			DrawSpriteScreenFX(11, FX_INK, temp0, temp1)
			temp0 += 21
			temp1 -= 28
			DrawSpriteScreenFX(12, FX_INK, temp0, temp1)
			temp0 += 165
			temp1 += 6
			DrawSpriteScreenFX(13, FX_INK, temp0, temp1)
			temp0 -= 91
			temp1 -= 19
			DrawSpriteScreenFX(14, FX_INK, temp0, temp1)

			temp0 -= 35
			temp1 += 11
			DrawSpriteScreenFX(15, FX_INK, temp0, temp1)
			temp0 += 17
			temp1 += 22
			DrawSpriteScreenFX(16, FX_INK, temp0, temp1)
			temp0 -= 30
			temp1 += 19
			DrawSpriteScreenFX(17, FX_INK, temp0, temp1)
			temp0 += 71
			temp1 -= 52
			DrawSpriteScreenFX(19, FX_INK, temp0, temp1)
			temp0 += 90
			temp1 += 21
			DrawSpriteScreenFX(18, FX_INK, temp0, temp1)

			temp0 -= 182
			temp1 += 81
			DrawSpriteScreenFX(25, FX_INK, temp0, temp1)
			break
		end switch
		
		


		temp1 = menu.selection
		temp1 *= 26
		temp1 += 42
		//DrawSpriteScreenFX(6, FX_INK, temp0, temp1)
	end if

end event

event ObjectStartup
	object[13].type = TypeName[Controls Menu]
    	LoadSpriteSheet("Title/ControlsMenu.gif")
		SpriteFrame(-4, 0, 8, 128, 296, 288)		//00 Black Banner
		SpriteFrame(-2, -3, 49, 7, 305, 323)	//01 Controls
		SpriteFrame(-25, 0, 94, 1, 305, 288)		//02 Line

		SpriteFrame(-2, -3, 133, 93, 1, 89)	//03 Xbox
		SpriteFrame(-7, -3, 137, 87, 1, 1)	//04 PS
		SpriteFrame(-7, -13, 142, 99, 152, 288)	//05 Switch

	SpriteFrame(-13, -3, 65, 8, 305, 291)	//6 Keyboard
	SpriteFrame(15, -3, 65, 8, 305, 299)	//7 Xbox
	SpriteFrame(-24, -3, 65, 8, 305, 307)	//8 Playstation
	SpriteFrame(-8, -3, 65, 7, 305, 315)	//9 Switch

	SpriteFrame(0, 0, 82, 9, 297, 11)	//10 DPAD LEFT RIGHT
	SpriteFrame(0, 0, 119, 18, 297, 21)	//11 DPAD DOWN
	SpriteFrame(0, 0, 99, 9, 297, 1)	//12 DPAD UP
	SpriteFrame(0, 0, 73, 9, 380, 11)	//13 JUMP
	SpriteFrame(0, 0, 73, 9, 397, 1)	//14 LIGHT SPEED DASH

	SpriteFrame(-13, -3, 65, 8, 298, 40)	//15 Look Up
	SpriteFrame(-5, -3, 65, 8, 298, 48)	//16 Move
	SpriteFrame(-25, -3, 70, 8, 298, 56)	//17 Crouch
	SpriteFrame(-5, -3, 65, 8, 298, 64)	//18 Jump
	SpriteFrame(-19, -4, 65, 7, 298, 72)	//19 2nd

	SpriteFrame(-13, -3, 50, 16, 305, 331)	//20 ASD
	SpriteFrame(-13, -3, 50, 16, 305, 348)	//21
	SpriteFrame(-13, -3, 50, 16, 305, 365)	//22
	SpriteFrame(-13, -3, 50, 16, 305, 382)	//23
	SpriteFrame(-13, -3, 50, 16, 305, 399)	//24

	SpriteFrame(0, 0, 180, 16, 2, 394)	//25
	SpriteFrame(0, 0, 180, 16, 2, 418)	//26
	SpriteFrame(0, 0, 180, 16, 2, 442)	//27

		

end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 223, 172)
end event